package com.zhouyu.gamecommunity.utils;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.io.*;
import java.util.Map;


/**
 * @author admin
 * @Package com.thunisoft.xygl.app.utils
 * @date 2023/5/2916:28
 */
@Component
public class WordUtil {
    /**
     * word文档导出工具类
     */
    final static Logger log = LoggerFactory.getLogger(WordUtil.class);

    public static File createWordByTemplate(String fileName, Map<String, Object> param) {
        try {

            File file = new File(fileName);
            // 插件列表,可以去官网查看，有列循环，还有行循环，这里是行循环实例
            LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
            //这里可以指定一个config类，用来指定一些规则，也可以改变模板中{{}}的这种格式
            Configure config = Configure.builder()
                    .useSpringEL(false)
                    .build();
            InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.docx");
            XWPFTemplate compile = XWPFTemplate.compile(stream, config);
            compile.render(param);
            compile.writeAndClose(new FileOutputStream(file));
            compile.close();
            return file;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

//    public static String docxToHtml(String filePath) {
//        try {
//            ByteArrayOutputStream htmlStream = new ByteArrayOutputStream();
//            XWPFDocument docxDocument = new XWPFDocument(Files.newInputStream(Paths.get(filePath)));
//            XHTMLOptions options = XHTMLOptions.create();
//            // 是否忽略未使用的样式
//            options.setIgnoreStylesIfUnused(false);
//            // 设置片段模式，<div>标签包裹
//            options.setFragment(true);
//            // 图片转base64
//            options.setImageManager(new Base64EmbedImgManager());
//            // 转换htm1
//            XHTMLConverter.getInstance().convert(docxDocument, htmlStream, options);
//            String html = htmlStream.toString().replace("div", "p").replace("width:595.3pt;","");
//            return html;
//        } catch (Exception e) {
//            log.error("Word转Html过程出现异常！", e);
//        }
//        return null;
//    }
//
//    public static String docxToHtml(File file) {
//        try {
//            ByteArrayOutputStream htmlStream = new ByteArrayOutputStream();
//            XWPFDocument docxDocument = new XWPFDocument(new FileInputStream(file));
//            XHTMLOptions options = XHTMLOptions.create();
//            // 是否忽略未使用的样式
//            options.setIgnoreStylesIfUnused(false);
//            // 设置片段模式，<div>标签包裹
//            options.setFragment(true);
//            // 图片转base64
//            options.setImageManager(new Base64EmbedImgManager());
//            // 转换htm1
//            XHTMLConverter.getInstance().convert(docxDocument, htmlStream, options);
//            String html = htmlStream.toString().replace("div", "p").replace("width:595.3pt;","");
//            return html;
//        } catch (Exception e) {
//            log.error("Word转Html过程出现异常！", e);
//        }
//        return null;
//    }

}
